home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Development Libraries / SGI IRIX 6.2 Development Libraries.iso / dist / complib.idb / usr / share / catman / p_man / cat3 / complib / SQRSL.z / SQRSL
Text File  |  1996-03-14  |  6KB  |  199 lines

  1.  
  2.  
  3.  
  4. SSSSQQQQRRRRSSSSLLLL((((3333FFFF))))                                                            SSSSQQQQRRRRSSSSLLLL((((3333FFFF))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      SQRSL   - SQRSL applies the output of SQRDC to compute coordinate
  10.      transformations, projections, and least squares solutions.  For K .LE.
  11.      MIN(N,P), let XK be the matrix
  12.  
  13.         XK = (X(JPVT(1)),X(JPVT(2)), ... ,X(JPVT(K)))
  14.  
  15.      formed from columnns JPVT(1), ... ,JPVT(K) of the original N x P matrix X
  16.      that was input to SQRDC (if no pivoting was done, XK consists of the
  17.      first K columns of X in their original order).  SQRDC produces a factored
  18.      orthogonal matrix Q and an upper triangular matrix R such that
  19.  
  20.         XK = Q * (R)
  21.         (0)
  22.  
  23.      This information is contained in coded form in the arrays X and QRAUX.
  24.  
  25.  
  26. SSSSYYYYNNNNOOOOPPPPSSSSYYYYSSSS
  27.       SUBROUTINE SQRSL(X,LDX,N,K,QRAUX,Y,QY,QTY,B,RSD,XB,JOB,INFO)
  28.  
  29. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  30.      On Entry
  31.  
  32.      XXXX REAL(LDX,P)
  33.         X contains the output of SQRDC.
  34.  
  35.      LLLLDDDDXXXX INTEGER
  36.         LDX is the leading dimension of the array X.
  37.  
  38.      NNNN INTEGER
  39.         N is the number of rows of the matrix XK.  It must
  40.         have the same value as N in SQRDC.
  41.  
  42.      KKKK INTEGER
  43.         K is the number of columns of the matrix XK.  K
  44.         must not be greater than MIN(N,P), where P is the
  45.         same as in the calling sequence to SQRDC.
  46.  
  47.      QQQQRRRRAAAAUUUUXXXX REAL(P)
  48.         QRAUX contains the auxiliary output from SQRDC.
  49.  
  50.      YYYY REAL(N)
  51.         Y contains an N-vector that is to be manipulated
  52.         by SQRSL.
  53.  
  54.      JJJJOOOOBBBB INTEGER
  55.         JOB specifies what is to be computed.  JOB has
  56.         the decimal expansion ABCDE, with the following
  57.         meaning.
  58.         If A .NE. 0, compute QY.
  59.         If B,C,D, or E .NE. 0, compute QTY.
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. SSSSQQQQRRRRSSSSLLLL((((3333FFFF))))                                                            SSSSQQQQRRRRSSSSLLLL((((3333FFFF))))
  71.  
  72.  
  73.  
  74.         If C .NE. 0, compute B.
  75.         If D .NE. 0, compute RSD.
  76.         If E .NE. 0, compute XB.
  77.         Note that a request to compute B, RSD, or XB
  78.         automatically triggers the computation of QTY, for
  79.         which an array must be provided in the calling
  80.         sequence.  On Return
  81.  
  82.      QQQQYYYY REAL(N).
  83.         QY contains Q*Y, if its computation has been
  84.         requested.
  85.  
  86.      QQQQTTTTYYYY REAL(N).
  87.         QTY contains TRANS(Q)*Y, if its computation has
  88.         been requested.  Here TRANS(Q) is the
  89.         transpose of the matrix Q.
  90.  
  91.      BBBB REAL(K)
  92.         B contains the solution of the least squares problem
  93.         minimize norm2(Y - XK*B),
  94.         if its computation has been requested.  (Note that
  95.         if pivoting was requested in SQRDC, the J-th
  96.         component of B will be associated with column JPVT(J)
  97.         of the original matrix X that was input into SQRDC.)
  98.  
  99.      RRRRSSSSDDDD REAL(N).
  100.         RSD contains the least squares residual Y - XK*B,
  101.         if its computation has been requested.  RSD is
  102.         also the orthogonal projection of Y onto the
  103.         orthogonal complement of the column space of XK.
  104.  
  105.      XXXXBBBB REAL(N).
  106.         XB contains the least squares approximation XK*B,
  107.         if its computation has been requested.  XB is also
  108.         the orthogonal projection of Y onto the column space
  109.         of X.
  110.  
  111.      IIIINNNNFFFFOOOO INTEGER.
  112.         INFO is zero unless the computation of B has
  113.         been requested and R is exactly singular.  In
  114.         this case, INFO is the index of the first zero
  115.         diagonal element of R and B is left unaltered.  The parameters QY,
  116.      QTY, B, RSD, and XB are not referenced if their computation is not
  117.      requested and in this case can be replaced by dummy variables in the
  118.      calling program.  To save storage, the user may in some cases use the
  119.      same array for different parameters in the calling sequence.  A
  120.      frequently occuring example is when one wishes to compute any of B, RSD,
  121.      or XB and does not need Y or QTY.  In this case one may identify Y, QTY,
  122.      and one of B, RSD, or XB, while providing separate arrays for anything
  123.      else that is to be computed.  Thus the calling sequence CALL
  124.      SQRSL(X,LDX,N,K,QRAUX,Y,DUM,Y,B,Y,DUM,110,INFO) will result in the
  125.      computation of B and RSD, with RSD overwriting Y.  More generally, each
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. SSSSQQQQRRRRSSSSLLLL((((3333FFFF))))                                                            SSSSQQQQRRRRSSSSLLLL((((3333FFFF))))
  137.  
  138.  
  139.  
  140.      item in the following list contains groups of permissible identifications
  141.      for a single callinng sequence.  1. (Y,QTY,B) (RSD) (XB) (QY) 2.
  142.      (Y,QTY,RSD) (B) (XB) (QY) 3. (Y,QTY,XB) (B) (RSD) (QY) 4. (Y,QY) (QTY,B)
  143.      (RSD) (XB) 5. (Y,QY) (QTY,RSD) (B) (XB) 6. (Y,QY) (QTY,XB) (B) (RSD) In
  144.      any group the value returned in the array allocated to the group
  145.      corresponds to the last member of the group.  LINPACK.  This version
  146.      dated 08/14/78 .  G. W. Stewart, University of Maryland, Argonne National
  147.      Lab.
  148.  
  149.      SSSSQQQQRRRRSSSSLLLL uses the following functions and subprograms. BLAS SAXPY,SCOPY,SDOT
  150.      Fortran ABS,MIN0,MOD
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.